Introduction
In order to understand where the best place to add bike share
stations, it would be helpful to first see a visual of where the current
bike share stations are located, where signed bike routes are, and the
overall usage of vehicles for people’s primary mode of transportation
versus public transportation for primary mode of transportation.
Load Appropriate Packages
library(knitr)
library(tidyverse)
library(janitor)
library(here)
library(sf)
library(tmap)
library(tidycensus)
Knitr is used for properly transforming the r notebook into an html
file. The tidyverse is used to tidy data using other packages within in
such as dplyr. The janitor packages is used to clean up the variable
names from the data sets. The here library is used to locate files on
the computer to make it easier to load in the data sets. The sf library
is used to work with spatial data. The tmap library is used to create
interaactive maps. The tidycensus data is used to get data from the U.S
Census Bureau data via codes.
Read in the captial bike share data
bikes = (read.csv(here("data_raw", "202309-capitalbikeshare-tripdata.csv"))) |> clean_names()
Read in the Captial Bikeshare Station Locations
racks = st_read((here("data_raw", "Capital_Bikeshare_Locations.geojson"))) |> clean_names()
Reading layer `Capital_Bikeshare_Locations' from data source `C:\Users\thistljy\Documents\ds241_final\data_raw\Capital_Bikeshare_Locations.geojson' using driver `GeoJSON'
Simple feature collection with 754 features and 27 fields
Geometry type: POINT
Dimension: XY
Bounding box: xmin: -77.36842 ymin: 38.78264 xmax: -76.82554 ymax: 39.12584
Geodetic CRS: WGS 84
Api Key to access the census data
census_api_key("9fc5d3792d3a5e922287c3f4e9995118766d50a2")
To install your API key for use in future sessions, run this function with `install = TRUE`.
Loading in the codes that is linked to access the specific census
data
v2018 = load_variables(2018, "acs5")
Load the relevant data from the 2017-2021 Census Data for Washington
DC
df_census=get_acs(geography = "tract",
variables=c("vehicles"="B08141_001",
"population" = "B01001_001",
"public_transportion" = "B08006_008"),
state="DC",geometry=TRUE,year=2021)
Getting data from the 2017-2021 5-year ACS
Downloading feature geometry from the Census website. To cache shapefiles for use in future sessions, set `options(tigris_use_cache = TRUE)`.
Using FIPS code '11' for state 'DC'
For this analysis, we will need the amount of vehiclces used in a
specific location in Washington D.c., the population for each area in
Washington D.C., and the usage of public transportation in those same
areas.
Make sure our data frames plot
plot(df_census)

plot(racks)
Warning: plotting the first 9 out of 27 attributes; use max.plot = 27 to plot all

Make each observation of vehicles, population, and public
transportation into their own columns
tmap_mode("view")
tmap mode set to interactive viewing
df_cens=df_census %>%
select(-moe) %>%
pivot_wider(names_from = "variable",
values_from = "estimate")|>
mutate(pub_pop = public_transportion / population,
v_pop = vehicles / population)
Read the Signed Bike Routes data into a spatial data frame.
bike_routes = st_read((here("data_raw", "Signed_Bike_Routes.geojson"))) |> clean_names()
Reading layer `Signed_Bike_Routes' from data source `C:\Users\thistljy\Documents\ds241_final\data_raw\Signed_Bike_Routes.geojson' using driver `GeoJSON'
Simple feature collection with 1024 features and 37 fields
Geometry type: LINESTRING
Dimension: XY
Bounding box: xmin: -77.08773 ymin: 38.8404 xmax: -76.92188 ymax: 38.98634
Geodetic CRS: WGS 84
Plot data
df_cens_adj = df_cens |> st_transform(4326)
bike_routes = st_as_sf(bike_routes, crs=st_crs(df_cens_adj))
racks = st_as_sf(racks, crs=st_crs(df_cens_adj))
tm_shape(df_cens) +tm_polygons(c("pub_pop", "v_pop"), alpha=.5) + tm_shape(racks) +tm_symbols(size = 0.1, alpha = 0.5) +
tm_shape(bike_routes) + tm_lines(col="blue",lwd=1,alpha= 1)
Here, we see two maps of Washington D.C. The map on the right shows
the population proportion of people who use public transportation
(excluding taxi-cabs), and on the right we see a the population
proportion of people who own vehicles. The assumption is that they use
these vehicles as the primary method to commute to work, school, or
other transportation needs. On both of the maps, the blue lines
represent signed bike routes routes. The assumption is that the primary
target areas to put more bike share stations should be where the bikes
would be the most accessible to ride on. Signed bike routes mean that
those areas are most likely the more safe areas to ride bikes in, and
the area around would be most accommodating to bike riders. The circles
on each map represents the current bike share locations.
LS0tDQp0aXRsZTogIkhvdyB0aGUgZmxvdyBvZiB0cmFmZmljIG9mIGNhcnMgY29ycmVsYXRlcyB3aXRoIGJpa2Ugc2hhcmUgZGF0YSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCg0KIyBJbnRyb2R1Y3Rpb24NCg0KSW4gb3JkZXIgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGUgYmVzdCBwbGFjZSB0byBhZGQgYmlrZSBzaGFyZSBzdGF0aW9ucywgaXQgd291bGQgYmUgaGVscGZ1bCB0byBmaXJzdCBzZWUgYSB2aXN1YWwgb2Ygd2hlcmUgdGhlIGN1cnJlbnQgYmlrZSBzaGFyZSBzdGF0aW9ucyBhcmUgbG9jYXRlZCwgd2hlcmUgc2lnbmVkIGJpa2Ugcm91dGVzIGFyZSwgYW5kIHRoZSBvdmVyYWxsIHVzYWdlIG9mIHZlaGljbGVzIGZvciBwZW9wbGUncyBwcmltYXJ5IG1vZGUgb2YgdHJhbnNwb3J0YXRpb24gdmVyc3VzIHB1YmxpYyB0cmFuc3BvcnRhdGlvbiBmb3IgcHJpbWFyeSBtb2RlIG9mIHRyYW5zcG9ydGF0aW9uLiANCg0KIyMgTG9hZCBBcHByb3ByaWF0ZSBQYWNrYWdlcw0KDQpgYGB7cn0NCmxpYnJhcnkoa25pdHIpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoamFuaXRvcikNCmxpYnJhcnkoaGVyZSkgDQpsaWJyYXJ5KHNmKSANCmxpYnJhcnkodG1hcCkNCmxpYnJhcnkodGlkeWNlbnN1cykNCmBgYA0KS25pdHIgaXMgdXNlZCBmb3IgcHJvcGVybHkgdHJhbnNmb3JtaW5nIHRoZSByIG5vdGVib29rIGludG8gYW4gaHRtbCBmaWxlLg0KVGhlIHRpZHl2ZXJzZSBpcyB1c2VkIHRvIHRpZHkgZGF0YSB1c2luZyBvdGhlciBwYWNrYWdlcyB3aXRoaW4gaW4gc3VjaCBhcyBkcGx5ci4NClRoZSBqYW5pdG9yIHBhY2thZ2VzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIHZhcmlhYmxlIG5hbWVzIGZyb20gdGhlIGRhdGEgc2V0cy4NClRoZSBoZXJlIGxpYnJhcnkgaXMgdXNlZCB0byBsb2NhdGUgZmlsZXMgb24gdGhlIGNvbXB1dGVyIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGxvYWQgaW4gdGhlIGRhdGEgc2V0cy4NClRoZSBzZiBsaWJyYXJ5IGlzIHVzZWQgdG8gd29yayB3aXRoIHNwYXRpYWwgZGF0YS4NClRoZSB0bWFwIGxpYnJhcnkgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhYWN0aXZlIG1hcHMuDQpUaGUgdGlkeWNlbnN1cyBkYXRhIGlzIHVzZWQgdG8gZ2V0IGRhdGEgZnJvbSB0aGUgVS5TIENlbnN1cyBCdXJlYXUgZGF0YSB2aWEgY29kZXMuIA0KDQojIyBSZWFkIGluIHRoZSBjYXB0aWFsIGJpa2Ugc2hhcmUgZGF0YQ0KDQpgYGB7cn0NCmJpa2VzID0gKHJlYWQuY3N2KGhlcmUoImRhdGFfcmF3IiwgIjIwMjMwOS1jYXBpdGFsYmlrZXNoYXJlLXRyaXBkYXRhLmNzdiIpKSkgfD4gY2xlYW5fbmFtZXMoKQ0KYGBgDQoNCiMgUmVhZCBpbiB0aGUgQ2FwdGlhbCBCaWtlc2hhcmUgU3RhdGlvbiBMb2NhdGlvbnMNCg0KYGBge3J9DQpyYWNrcyA9IHN0X3JlYWQoKGhlcmUoImRhdGFfcmF3IiwgIkNhcGl0YWxfQmlrZXNoYXJlX0xvY2F0aW9ucy5nZW9qc29uIikpKSB8PiBjbGVhbl9uYW1lcygpIA0KYGBgDQogDQojIyBBcGkgS2V5IHRvIGFjY2VzcyB0aGUgY2Vuc3VzIGRhdGENCmBgYHtyfQ0KY2Vuc3VzX2FwaV9rZXkoIjlmYzVkMzc5MmQzYTVlOTIyMjg3YzNmNGU5OTk1MTE4NzY2ZDUwYTIiKQ0KDQpgYGANCg0KIyMgTG9hZGluZyBpbiB0aGUgY29kZXMgdGhhdCBpcyBsaW5rZWQgdG8gYWNjZXNzIHRoZSBzcGVjaWZpYyBjZW5zdXMgZGF0YSANCmBgYHtyfQ0KdjIwMTggPSBsb2FkX3ZhcmlhYmxlcygyMDE4LCAiYWNzNSIpDQpgYGANCg0KIyMgTG9hZCB0aGUgcmVsZXZhbnQgZGF0YSBmcm9tIHRoZSAyMDE3LTIwMjEgQ2Vuc3VzIERhdGEgZm9yIFdhc2hpbmd0b24gREMNCg0KYGBge3J9DQpkZl9jZW5zdXM9Z2V0X2FjcyhnZW9ncmFwaHkgPSAidHJhY3QiLA0KICAgICAgICAgICAgICAgICAgdmFyaWFibGVzPWMoInZlaGljbGVzIj0iQjA4MTQxXzAwMSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG9wdWxhdGlvbiIgPSAiQjAxMDAxXzAwMSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB1YmxpY190cmFuc3BvcnRpb24iID0gIkIwODAwNl8wMDgiKSwNCiAgICAgICAgICAgICAgICAgIHN0YXRlPSJEQyIsZ2VvbWV0cnk9VFJVRSx5ZWFyPTIwMjEpIA0KYGBgDQpGb3IgdGhpcyBhbmFseXNpcywgd2Ugd2lsbCBuZWVkIHRoZSBhbW91bnQgb2YgdmVoaWNsY2VzIHVzZWQgaW4gYSBzcGVjaWZpYyBsb2NhdGlvbiBpbiBXYXNoaW5ndG9uIEQuYy4sIHRoZSBwb3B1bGF0aW9uIGZvciBlYWNoIGFyZWEgaW4gV2FzaGluZ3RvbiBELkMuLCBhbmQgdGhlIHVzYWdlIG9mIHB1YmxpYyB0cmFuc3BvcnRhdGlvbiBpbiB0aG9zZSBzYW1lIGFyZWFzLiANCg0KIyMgTWFrZSBzdXJlIG91ciBkYXRhIGZyYW1lcyBwbG90DQoNCmBgYHtyfQ0KcGxvdChkZl9jZW5zdXMpDQpwbG90KHJhY2tzKQ0KYGBgDQoNCiMjIE1ha2UgZWFjaCBvYnNlcnZhdGlvbiBvZiB2ZWhpY2xlcywgcG9wdWxhdGlvbiwgYW5kIHB1YmxpYyB0cmFuc3BvcnRhdGlvbiBpbnRvIHRoZWlyIG93biBjb2x1bW5zDQoNCmBgYHtyfQ0KDQp0bWFwX21vZGUoInZpZXciKQ0KDQpkZl9jZW5zPWRmX2NlbnN1cyAlPiUgDQogIHNlbGVjdCgtbW9lKSAlPiUgDQogIHBpdm90X3dpZGVyKG5hbWVzX2Zyb20gPSAidmFyaWFibGUiLCANCiAgICAgICAgICAgICAgdmFsdWVzX2Zyb20gPSAiZXN0aW1hdGUiKXw+IA0KICBtdXRhdGUocHViX3BvcCA9IHB1YmxpY190cmFuc3BvcnRpb24gLyBwb3B1bGF0aW9uLA0KICAgICAgICAgdl9wb3AgPSB2ZWhpY2xlcyAvIHBvcHVsYXRpb24pDQoNCmBgYA0KDQoNCiMjIFJlYWQgdGhlIFNpZ25lZCBCaWtlIFJvdXRlcyBkYXRhIGludG8gYSBzcGF0aWFsIGRhdGEgZnJhbWUuIA0KYGBge3J9DQpiaWtlX3JvdXRlcyA9IHN0X3JlYWQoKGhlcmUoImRhdGFfcmF3IiwgIlNpZ25lZF9CaWtlX1JvdXRlcy5nZW9qc29uIikpKSB8PiBjbGVhbl9uYW1lcygpIA0KYGBgDQoNCiMjIFBsb3QgZGF0YQ0KYGBge3J9DQpkZl9jZW5zX2FkaiA9IGRmX2NlbnMgfD4gc3RfdHJhbnNmb3JtKDQzMjYpDQpiaWtlX3JvdXRlcyA9IHN0X2FzX3NmKGJpa2Vfcm91dGVzLCBjcnM9c3RfY3JzKGRmX2NlbnNfYWRqKSkNCg0KcmFja3MgPSBzdF9hc19zZihyYWNrcywgY3JzPXN0X2NycyhkZl9jZW5zX2FkaikpDQp0bV9zaGFwZShkZl9jZW5zKSArdG1fcG9seWdvbnMoYygicHViX3BvcCIsICJ2X3BvcCIpLCBhbHBoYT0uNSkgKyB0bV9zaGFwZShyYWNrcykgK3RtX3N5bWJvbHMoc2l6ZSA9IDAuMSwgYWxwaGEgPSAwLjUpICsgICANCnRtX3NoYXBlKGJpa2Vfcm91dGVzKSArIHRtX2xpbmVzKGNvbD0iYmx1ZSIsbHdkPTEsYWxwaGE9IDEpDQpgYGANCg0KSGVyZSwgd2Ugc2VlIHR3byBtYXBzIG9mIFdhc2hpbmd0b24gRC5DLiBUaGUgbWFwIG9uIHRoZSByaWdodCBzaG93cyB0aGUgcG9wdWxhdGlvbiBwcm9wb3J0aW9uIG9mIHBlb3BsZSB3aG8gdXNlIHB1YmxpYyB0cmFuc3BvcnRhdGlvbiAoZXhjbHVkaW5nIHRheGktY2FicyksIGFuZCBvbiB0aGUgcmlnaHQgd2Ugc2VlIGEgdGhlIHBvcHVsYXRpb24gcHJvcG9ydGlvbiBvZiBwZW9wbGUgd2hvIG93biB2ZWhpY2xlcy4gVGhlIGFzc3VtcHRpb24gaXMgdGhhdCB0aGV5IHVzZSB0aGVzZSB2ZWhpY2xlcyBhcyB0aGUgcHJpbWFyeSBtZXRob2QgdG8gY29tbXV0ZSB0byB3b3JrLCBzY2hvb2wsIG9yIG90aGVyIHRyYW5zcG9ydGF0aW9uIG5lZWRzLiBPbiBib3RoIG9mIHRoZSBtYXBzLCB0aGUgYmx1ZSBsaW5lcyByZXByZXNlbnQgc2lnbmVkIGJpa2Ugcm91dGVzIHJvdXRlcy4gVGhlIGFzc3VtcHRpb24gaXMgdGhhdCB0aGUgcHJpbWFyeSB0YXJnZXQgYXJlYXMgdG8gcHV0IG1vcmUgYmlrZSBzaGFyZSBzdGF0aW9ucyBzaG91bGQgYmUgd2hlcmUgdGhlIGJpa2VzIHdvdWxkIGJlIHRoZSBtb3N0IGFjY2Vzc2libGUgdG8gcmlkZSBvbi4gU2lnbmVkIGJpa2Ugcm91dGVzIG1lYW4gdGhhdCB0aG9zZSBhcmVhcyBhcmUgbW9zdCBsaWtlbHkgdGhlIG1vcmUgc2FmZSBhcmVhcyB0byByaWRlIGJpa2VzIGluLCBhbmQgdGhlIGFyZWEgYXJvdW5kIHdvdWxkIGJlIG1vc3QgYWNjb21tb2RhdGluZyB0byBiaWtlIHJpZGVycy4gVGhlIGNpcmNsZXMgb24gZWFjaCBtYXAgcmVwcmVzZW50cyB0aGUgY3VycmVudCBiaWtlIHNoYXJlIGxvY2F0aW9ucy4gDQoNCiMjIERhdGEgU291cmNlczoNCg0KQ2FwaXRhbCBCaWtlIFNoYXJlIEJpa2UgUmFja3M6IGh0dHBzOi8vb3BlbmRhdGEuZGMuZ292L2RhdGFzZXRzL2ExZjdhY2Y2NTc5NTQ1MWQ4OWYwYTM4NTY1YTk3NWIzXzUvYWJvdXQNCkJpa2UgU2hhcmUgRGF0YTogaHR0cHM6Ly9jYXBpdGFsYmlrZXNoYXJlLmNvbS9zeXN0ZW0tZGF0YQ0KU2lnbmVkIEJpa2UgUm91dGVzOiBodHRwczovL29wZW5kYXRhLmRjLmdvdi9leHBsb3JlP2NvbGxlY3Rpb249RGF0YXNldCZxdWVyeT1CaWtlJTIwUm91dGVzDQoNCg0K